package com.huajx.student.face.model;

import com.ha.facecamera.configserver.ConfigServer;
import com.ha.facecamera.configserver.ConfigServerConfig;
import com.ha.facecamera.configserver.ConnectStateInvokeCondition;
import com.ha.facecamera.configserver.DataServer;
import com.ha.facecamera.configserver.DataServerConfig;

public class StudentFaceService {
	
	private static DataServer dataServer;
	
	private static ConfigServer  configServer;
	
	public static Boolean isRunServer=false;
	
	 public static void run(String[] args) {
		 StudentFaceService.start();
	  }

	 /**
     * 开始启动
     */
    public static void start() {
    	Boolean ces = startConfigService(10001);
    	Boolean res = startDataServer(10002);
    	if(ces && res){
    		isRunServer=true;
    	}
    }
    
    /**
	 * 配置服务器启动
	 * @param machineId 人脸相机编码
	 * @param outPort 人脸相机外网穿透端口
	 * @return
	 */
	public static Boolean startConfigService(int outPort){
		configServer = new ConfigServer();
		ConfigServerConfig serverConfig=new ConfigServerConfig();
		return configServer.start(outPort,serverConfig);
		
	}
	/**
	 * 启动数据服务武器
	 * @param uploadProt 人脸相机TCP上传端口
	 * @return
	 */
	public static Boolean startDataServer(int uploadProt){
		dataServer=new DataServer();
		DataServerConfig dsc = new DataServerConfig();
		dsc.connectStateInvokeCondition = ConnectStateInvokeCondition.DeviceNoKnown;
		return dataServer.start(uploadProt, dsc);
	}
	/**
	 * 人脸相机图像添加
	 * @param machineId 人脸相机编码
	 * @param name 学生名称
	 * @param cardId 学生卡号
	 * @param role 角色
	 * @param path 图片地址
	 */
	public static void addFace(String machineId,String name,String cardId,int role ,String path){
		if(configServer!= null && configServer.getCameraOnlineState(machineId) && isRunServer) {
			System.out.println("设备在线");
			StudentFace studentFace=new StudentFace(name, cardId, role, path);
			if(configServer.addFace(machineId, studentFace.getFace(), 5000)) {
				System.out.println("添加人脸成功");
				dataServer.stop();
				configServer.stop();
			}else{
				System.out.println(configServer.getLastErrorMsg());
				System.out.println("添加人脸失败");
				dataServer.stop();
				configServer.stop();
				
			}
		}
	}
	/**
	 * 人脸相机图像更新
	 * @param machineId 人脸相机编码
	 * @param name 学生名称
	 * @param cardId 学生卡号
	 * @param role 角色
	 * @param path 图片地址
	 */
	public static void modifyFace(String machineId,String name,String cardId,int role ,String path){
		if(configServer!= null && configServer.getCameraOnlineState(machineId) && isRunServer) {
			System.out.println("设备在线");
			StudentFace studentFace=new StudentFace(name, cardId, role, path);
			if(configServer.modifyFace(machineId, studentFace.getFace(), 5000)) {
				System.out.println("更新人脸成功");
				dataServer.stop();
				configServer.stop();
			}else{
				System.out.println(configServer.getLastErrorMsg());
				System.out.println("更新人脸失败");
				dataServer.stop();
				configServer.stop();
				
			}
		}
	}
	/**
	 * 人脸相机图像删除
	 * @param machineId 人脸相机编码
	 * @param cardId 学生卡号
	 */
	public static void deleteFace(String machineId,String cardId){
		if(configServer!= null && configServer.getCameraOnlineState(machineId) && isRunServer) {
			System.out.println("设备在线");
			if(configServer.deleteFace(machineId, cardId, 5000)) {
				System.out.println("删除人脸成功");
				dataServer.stop();
				configServer.stop();
			}else{
				System.out.println(configServer.getLastErrorMsg());
				System.out.println("删除人脸失败");
				dataServer.stop();
				configServer.stop();
				
			}
		}
	}
	
}
